package com.lanou3g.code0420;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * If there are no bugs, it was created by Chen FengYao on 2018/4/20;
 * Otherwise, I don't know who created it either
 */

public class Server {
    // 并发ECHO 服务器
    // Echo服务器是 常见的一种小型服务器
    // 作用,将客户端发送来的数据,原封不动的
    // 再发回给客户端
    // 这样 客户端可以方便的判断服务器是否好用
    public static void main(String[] args) {
        try {
            // 创建一个Socket服务器对象
            // 在创建的时候绑定端口号
            // 注意 如果你重复运行该代码
            // 会出现端口号被占用异常
            ServerSocket ss = new ServerSocket(2333);
            System.out.println("服务器已启动,等待连接");
            while (true) {
                // accept()方法是 socket服务器等待
                // 客户端的介入,如果没有客户端接入
                // 则代码会在这一行一直等下去
                Socket client = ss.accept();
                // client.getRemoteSocketAddress
                // 可以获得 客户端的 ip地址 和端口号
                System.out.println("有一个客户端介入:" +
                        client.getRemoteSocketAddress());
                // 为每一个客户端创建线程
/*
                OutputStream os = client.getOutputStream();
                PrintWriter pw = new PrintWriter(new OutputStreamWriter(os));
                BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("Test.html")));
                String header = "HTTP/1.1 200 OK\n" +
                        "content-type: text/html\n";
                pw.println(header);
                String line = "";
                while ((line = reader.readLine()) != null) {
                    pw.println(line);
                    pw.flush();
                }
                // 自己try-catch
                try {
                    Thread.sleep(10000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                */
                new EchoThread(client).start();
            }


        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
